import { reactive, toRefs } from 'vue'
export default {
setup() {
const data = reactive({
title: 'Hello zbw',
todoList: [
{
id: 1,
name: 'kyrie',
age: 18,
},
{
id: 2,
name: 'wen',
age: 18,
},
],
})
const refData = toRefs(data)
const name = ref('kyrie')
conosle.log(name.value)
name.value = 'wen'
return {
...refData,
}
},
}
import { createApp } from "vue";
import App from "./App.vue";
const app = createApp(App);
const debounce = (fn, delay) => {
let timer;
return (...args) => {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, args);
}, delay);
};
};
app.config.globalProperties.$debounce = debounce;
import { getCurrentInstance } from 'vue'
const { proxy: { debounce } } = getCurrentInstance()
onMounted(() => {
data.onSubmit = debounce(data.onSubmit, 500)
})
import { createApp } from "vue";
import App from "./App.vue";
const app = createApp(App);
app.directive("highlight", {
beforeMount(el, binding, node) {
el.style.color = binding.value;
},
});
<p v-highlight="pColor">高亮显示此文本为红色</p>
<i v-highlight="iColor">高亮显示此文本为绿色</i>
setup() {
let pColor = ref('red')
let iColor = ref('green')
return {
pColor,
iColor
}
}
<button @click="$emit('say-hello', { msg: 'Hello', count: 1 })">say Hello</button>
export default {
emits: {
'say-hello': payload => {
if (payload.msg) {
console.log('参数校验通过!')
return true
} else {
console.log('参数缺少msg')
return false
}
}
}
}
<Child @sayHello="sayHi"/>
setup() {
sayHi(val) {
console.log(val, '子组件传过来的值')
}
}
import mitt from "mitt";
export const emitter = mitt();
import { emitter } from "../emit";
emitter.emit('changeTitle', '新标题')
import { emitter } from "../emit";
const data = reactive({
title: "旧标题"
})
emitter.on('changeTitle', (value) => {
data.title = value
})
emitter.on("*", (type, val) => {
switch (type) {
case "increment":
data.count += val;
break;
case "decrement":
data.count -= val;
break;
case "changeTitle":
data.title = val;
break;
default:
break;
}
});
app.provide("userInfo", {
username: "kyrie",
password: "123456"
});
inject: {
myUserInfo: {
from: 'userInfo'
}
},